<?php


$arr8=[1,2,3,[5,2]];
$tmp8=$arr8;
$tmp8[1]=5;

print_r($arr8);
print_r($tmp8);
#$arr8和$tmp8 内部的数据都不存在引用标记,即没有c语言的指针
#当$arr8和$tmp8其中有一个改变时相互独立


$arr=array(10,1,2,3);
$x=&$arr[1];
#把$arr[1]变成,存在引用标记,相当于把$arr[1]变成c语言的指针
$temp=$arr;
//有引用的结构体(底层C语言),($x=&$arr[1])直接改值,不copy
$arr[1]=999;
#$temp的[1] 会变,因为在复制之前$arr[1]已经有引用标记,相当于c语言的指针
$arr[2]=999;;
#$temp的[2] 不会变,因为在复制之前不存在引用标记
print_r($temp);


$arr2=array(10,1,2,3);
$temp2=$arr2;
$x2=&$arr2[1];
#有引用的结构体(底层C语言),($x=&$arr[1])直接改值,不copy
$arr2[1]=999;
#数组$temp2下标为[1]的 不会变,因为在复制之前不是引用 .[ 测试版本php5.3-php8.5 ]
$arr2[2]=999;;
#数组$temp2下标为[2] 不会变,因为在复制之前不是是引用
print_r($temp2);









$arrat8=array(10,1,2,3);
foreach ($arrat8 as $vv){
    
}
#foreach遍历后PHP7以前(比如php5.6),不能获取当前值
#

var_dump(current($arrat8));

#总之,如果用等号方式数组之间的赋值,
#赋值之前没有引用是深拷贝
#赋值之前有引用是浅拷贝
